package so.ifl.servcie;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.transaction.annotation.Transactional;

import so.ifl.vo.AccountVo;
import so.ifl.vo.ExamBookingDetailVo;
import so.ifl.vo.ExamBookingVo;
import so.ifl.vo.ExamHistoryVo;

@Transactional
public interface ExamBookingService {

	/**
	 * 分页查询考试预约信息
	 * simon
	 * create at 2012-1-17 下午11:13:55
	 * <mailto:liangyuanliu@gmail.com>
	 * @param params
	 * @param offset
	 * @param limit
	 * @return
	 */
	public List<ExamBookingVo> queryExamBookingWithParamAndPagination(Map<String, Object> params, Integer offset, Integer limit);
	
	/**
	 * 统计预约信息
	 * simon
	 * create at 2012-1-17 下午11:14:03
	 * <mailto:liangyuanliu@gmail.com>
	 * @param params
	 * @return
	 */
	public Integer countExamBookingWithParam(Map<String, Object> params);
	
	/**
	 * 添加考试预约信息
	 * simon
	 * create at 2012-1-17 下午11:14:43
	 * <mailto:liangyuanliu@gmail.com>
	 * @param examBookingVo
	 */
	public void insertExamBooking(ExamBookingVo examBookingVo);
	
	/**
	 * 更新考试预约信息
	 * simon
	 * create at 2012-1-17 下午11:15:02
	 * <mailto:liangyuanliu@gmail.com>
	 * @param examBookingVo
	 */
	public void updateExamBooking(ExamBookingVo examBookingVo);
	
	/**删除考试预约信息
	 * simon
	 * create at 2012-1-17 下午11:15:26
	 * <mailto:liangyuanliu@gmail.com>
	 * @param companyId
	 */
	public void deleteExamBooking(Integer Id);
	
	/**
	 * 保存考试预约信息
	 * create by aaron.lu
	 * create at 2012-3-7 上午12:49:26
	 * <mailto: atyuan.lu@gmail.com>
	 * @param dataSetExamBooking
	 * @param dataSetExamBookingDetail
	 * @throws Exception 
	 *
	 */
	public void saveExamBookingInfo(ArrayList<ExamBookingVo> dataSetExamBooking, ArrayList<ExamBookingDetailVo> dataSetExamBookingDetail) throws Exception;
	
	/**
	 * 回表
	 * create by aaron.lu
	 * create at 2012-5-11 上午11:12:18
	 * <mailto: atyuan.lu@gmail.com>
	 * @param examBookingId
	 * @param accountVo
	 * @return
	 *
	 */
	public boolean returnBill(Integer examBookingId, AccountVo accountVo);
	
	/**
	 * 查询考试历史
	 * create by aaron.lu
	 * create at 2012-5-11 下午9:36:48
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @param offset
	 * @param limit
	 * @return
	 *
	 */
	public List<ExamHistoryVo> queryExamHistory(Map<String, Object> params, Integer offset, Integer limit);
	
	/**
	 * 统计考试记录
	 * create by aaron.lu
	 * create at 2012-5-11 下午9:37:41
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public int countExamHistory(Map<String, Object> params);
	

}
